package com.yonyou.cyxdms.sysAuth.service.service.role;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yonyou.cyxdms.sysAuth.service.dto.CommonTreeDTO;
import com.yonyou.cyxdms.sysAuth.service.dto.role.RolePDto;
import com.yonyou.cyxdms.sysAuth.service.entity.role.RolePO;
import com.yonyou.cyxdms.sysAuth.service.vo.role.RolePageVO;
import com.yonyou.cyxdms.sysAuth.service.vo.role.RoleVO;
import com.yonyou.cyxdms.sysmanage.client.vo.role.UserbyRoleVO;

import java.util.List;
import java.util.Map;

/**
 * 角色信息service接口
 *
 * @author RenWeiDong
 * @date 2017年5月27日
 */

public interface RoleService {

    /**
     * 添加角色信息
     *
     * @author adu
     * @since 2019/9/22
     */
    public Map<String, Object> addRole(RolePDto roleDto);

    /**
     * 删除角色及对应权限
     *
     * @author adu
     * @since 2019/9/19
     */
    public Integer deleteRoleById(Long id);

    public Integer updateRoleNameById(String roleName, String roleId);

    public Integer updateRoleNameByIds(String roleName, Integer isValid, String roleId);

    /**
     * 分页条件查询角色
     *
     * @author dengqiang
     * @since 2019/7/9
     */
    public IPage<RolePageVO> queryRole(Page<RolePageVO> page, Map<String, Object> queryCondition);

    public Integer isFixed();

    public List<Map<String, String>> queryByRoleId(Integer roleId);

    public List<CommonTreeDTO> querygfkmenu(String roleId);

    /**
     * 权限置空
     *
     * @author dengqiang
     * @since 2019/7/12
     */
    public void emptyRoleById(Long id);

    /**
     * 修改一条权限菜单
     *
     * @author dengqiang
     * @since 2019/7/12
     */
    public void editPermissionMenu(Integer permissionType, String permissionId, Long menuid);

    /**
     * 角色新增页面初始化数据
     *
     * @author dengqiang
     * @since 2019/7/24
     */
    List<Map<String, Object>> queryMenu(Integer dataType);

    /**
     * 通过角色类别查询用户信息
     *
     * @author maxingjian
     * @since 2019/9/18
     */
    public List<UserbyRoleVO> getUserInfoByRolePosition(String positionCode, String companyId, String ownerCode);

    /**
     * 通过角色查询用户信息
     *
     * @author maxingjian
     * @since 2019/9/18
     */
    public List<UserbyRoleVO> getUserInfoByRole(String roleCode, String companyId);

    public List<RolePO> getRole(Long companyId);

    public IPage<RolePageVO> getUserRoleName(Page<RolePageVO> page, Map<String, Object> queryCondition);

    /**
     * 获取厂端预置的所有角色
     *
     * @author 李贺
     * @since 2019/11/18
     */
    List<RoleVO> getPresetRole();

    /**
     * 保持编辑角色权限
     *
     * @author 李贺
     * @since 2019/12/16
     */
    void modifyOrg(RolePDto rolepdto);

    List<RoleVO> getPresetRoleByName(List<String> names);
}
